(function(cuiPackage){
	/**
	 * @class CUI.CPlugin
	 * 插件管理
	 * @singleton
	 * @author cqb
	 * @version 1.0
	 */
	cuiPackage.CPlugin = {
		/**
		 * @description 添加插件
		 * param {Object} module 组件模块
		 * param {String} name 插件名称
		 * param {Object} set 插件类
		 */
		add: function(module, name, set) {
			var proto = module.prototype;
			if(set){
				set["name"] = set["name"] || name;
				proto.plugins[name] = set || {};
			}
		},
		/**
		 * @description 执行插件
		 * param {Object} instance 执行对象
		 * param {String} name 插件名称
		 * param {Object} args 参数
		 */
		exec: function(instance, name, args) {
			this.call(instance, name, "handler", args);
		},
		
		/**
		 * @description 初始化插件
		 * param {Object} instance 执行对象
		 * param {String} name 插件名称
		 * param {Object} args 参数
		 */
		init: function(instance, name, args){
			this.call(instance, name, "init", args);
		},
		
		/**
		 * @description 调用方法
		 * param {Object} instance 执行对象
		 * param {String} name 插件名称
		 * param {String} method 方法名称
		 * param {Object} args 参数
		 */
		call: function(instance, name, method, args){
			var plugin = instance.plugins[name];
			if(!plugin) { return; }
			
			if (plugin[method]) {
				plugin[method].apply(instance, [args]);
				return false;
			}
		},
		
	   /**
        * 类名
        * @type {String}
        */
        CLASS_NAME: "CUI.CPlugin"	
	};
})(jQuery.fn);